/* 
 * File:   DrawLogic.h
 * Author: RedEyedKiller
 *
 * Created on 22 Σεπτέμβριος 2010, 7:17 μμ
 */

#ifndef DRAWLOGIC_H
#define	DRAWLOGIC_H

#include "AbstractLogic.h"
#include "Drawable.h"

namespace EntitySystem
{

/**
 * This class handles all sprite drawing logic needed by Entity.
 */

class DrawLogic : public Drawable, public AbstractLogic
{
public:
    DrawLogic();
    DrawLogic(const DrawLogic& orig);
    virtual ~DrawLogic();
    virtual DrawLogic* Clone();
    //In order this class stays compatible with the old Drawable hierarchy we needed
    //these virtual methods.
    
    virtual bool IsVisible(const Camera& camera) const;
    virtual void Draw(sdl::GraphicsCore *gCore, Camera *camera);
    Math::Vector2I GetDisplayDimensions();

    virtual void SetPosition(const Math::Vector2F& position);
    virtual Math::Vector2F GetPosition() const;

    virtual int GetX() const;
    virtual void SetX(int newX);
    virtual int GetY() const;
    virtual void SetY(int newY);
    virtual int GetWidth() const;
    virtual int GetHeight() const;
private:

};

};

#endif	/* DRAWLOGIC_H */

